package com.test.fundible.fundible_00_analytics.FundibleUtil

import android.app.Application
import android.content.Context
import com.test.fundible.fundible_00_analytics.fundiblebean.PamHitfundiblePointfundibleProlenders
import com.test.fundible.fundible_00_analytics.fundibleevent.FundibleIAnalyticsEvent
import com.test.fundible.fundible_00_analytics.fundiblehttp.FundibleHttpHelper
import com.google.gson.Gson
import com.test.fundible.fundible_00_utils.FundibleUtil

object FundibleAnalyticsUtil {

    /**
     * 初始化分析模块
     *
     * @param context Application
     */
    fun init_fundible(context: Application) {
        /** 初始化google install referrer */
        FundibleGoogleInstallUtil.init_fundible(context) {
            /** 保存渠道信息*/
            saveGoogleInstallInfo_fundible(mutableListOf(FundibleUtil.getCommonPath_fundible()))
        }

        /** 初始化广告id */
        FundibleAdvertIdUtil.init_fundible(context) { _, _ ->
            /** 保存渠道信息*/
            saveGoogleInstallInfo_fundible(mutableListOf(FundibleUtil.getCommonPath_fundible()))
        }

        /** 初始化设备信息 */
        FundibleSycDeviceUtil.in_fundibleit(context)

        /** 初始化adjust信息 */
        FundibleAdjustUtil.init_fundible(context)

        /** 初始化facebook */
        FundibleFacebookUtil.init_fundible(context)

        /** 初始化评分模块 */
        FundibleApRvUtil.iniAprvutil_fundible(context)

    }

    /**
     * 更新设备模块服务器请求地址
     * 1、如果未登录，在登录页登录成功后触发
     * 2、如果已登录，在启动时登录地区的转发路径时初始化成功后触发
     *
     * @param context Application
     */
    fun initDevice_fundible(context: Application) {
        /** 初始化设备信息 */
        FundibleSycDeviceUtil.in_fundibleit(context)
    }

    /**
     * 打点
     * 主要对注册、申贷这两个结果记录打点
     * 均是接口返回成功后触发打点
     *
     * @param event 事件名
     */
    fun addEvent_fundible(event: FundibleIAnalyticsEvent) {
        FundibleAdjustUtil.addEvent_fundible(event)
    }

    /**
     * 保存google s2s信息
     * **通常不用手动触发**
     * 1、启动页，触发保存
     */
    fun saveGoogleInstallInfo_fundible(targetUrlList: List<String>) {
        FundibleGoogleInstallUtil.saveS2sInfo_fundible(targetUrlList)
    }

    /**
     * 保存facebook s2s信息
     * 1、启动页，如果是已登录状态，触发保存
     * 2、登录页，登录成功后，触发保存
     */
    fun saveFacebookS2SInfo_fundible(targetUrlList: List<String>) {
        FundibleFacebookUtil.saveS2SInfo_fundible(targetUrlList)
    }

    /**
     * 保存Device s2s信息
     * 1、首页，点击申请且所有权限通过后，触发保存
     */
    fun saveDeviceS2SInfo_fundible() {
        FundibleSycDeviceUtil.saveS2SI_fundiblenfo()
    }

    /**
     * 保存Appsflyer 安装信息
     * **通常不用手动触发**
     * 1、收到Appsflyer的转化回调后，触发保存
     */
    fun saveAppsflyerInstall_fundible(targetUrlList: List<String>) {
//        AppsflyerUtil.saveInstallInfo(targetUrlList)
    }

    /**
     * 保存Adjust 安装信息
     * **通常不用手动触发**
     * 1、收到Adjust的转化回调后，触发保存
     */
    fun saveAdjustInstall_fundible(targetUrlList: List<String>) {
        FundibleAdjustUtil.saveInstallInfo_fundible(targetUrlList)
    }

    /**
     * 保存三方库 s2s信息
     * 1、启动页，如果是已登录状态，触发保存
     * 2、登录页，登录成功后，触发保存
     */
    fun saveFirebaseAndFacebookS2SInfo_fundible() {
        saveFacebookS2SInfo_fundible(mutableListOf(FundibleUtil.getCommonPath_fundible()))
    }

    /**
     * 保存UsageStats s2s信息
     * **通常不用手动触发**
     * 1、首页点击申请时触发，前提是用户已授权
     */
    fun saveUsageStatsS2SInfo_fundible(context: Application, targetUrlList: List<String>) {
//        UsageStatsUtil.saveS2SInfo(context, targetUrlList)
    }

    /**
     * 保存事件埋点
     *
     * @param type 事件类型
     * @param remark 备注
     */
    fun saveHitPointInfo_fundible(type: String, remark: String) {
        try {
            val params = PamHitfundiblePointfundibleProlenders(type = type, remark = remark)
            val body = Gson().toJson(params).trim()
            FundibleHttpHelper.postData_fundible("", body)
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

    /**
     * 判断是否拥有使用统计权限
     * 若拥有权限，则自动上传数据
     * 若没有权限，直接回调
     *
     * @param context Application
     * @param permissionGrantListener 权限授权回调
     */
    fun checkUsageStatsPermission_fundible(
        context: Application,
        permissionGrantListener: (Boolean) -> Unit
    ) {
//        UsageStatsUtil.checkAppUsagePermission(context, permissionGrantListener)
    }

    /**
     * 跳转使用统计权限页
     *
     * @param context 上下文
     */
    fun startToUsageStatsPermissionSettingPage_fundible(context: Context) {
//        UsageStatsUtil.startToUsageStatsPermissionSettingPage(context)
    }

    /**
     * 获取谷歌安装渠道信息
     */
    fun getInstallReferrer_fundible(): String {
        return FundibleGoogleInstallUtil.getInstallReferrer_fundible()
    }

    /**
     * 获取adId
     */
    fun getAdId_fundible(): String {
        return FundibleAdvertIdUtil.getAdId_fundible()
    }

    /**
     * 获取adEnabled
     */
    fun getAdEnabled_fundible(): Int {
        return FundibleAdvertIdUtil.getAdEnabled_fundible()
    }

    /**
     * 获取安卓Id
     */
    fun getAndroidId_fundible(): String {
        return FundibleAdvertIdUtil.getAndroidId_fundible()
    }

}